//
//  Line3D.hpp
//  C3W_Demo_By_Fan
//
//  Created by 范静涛 on 2024/7/23.
//

//------------------------------------------------------------------------------
//【文件名】Line3D.hpp
//【功能模块和目的】三维直线段类声明
//【开发者及日期】范静涛 2024/7/23
//【更改记录】
//------------------------------------------------------------------------------

#ifndef Line3D_hpp
#define Line3D_hpp

//Element3D_FixedPoints基类所属头文件
#include "Element3D_FixedPoints.hpp"

//------------------------------------------------------------------------------
//【类名】Line3D
//【功能】三维直线段（两个非重复三维点组成）
//【接口说明】
//    继承得到基类所有接口
//    带参数构造函数
//    拷贝构造函数
//    赋值运算符overload
//    虚析构函数（可能做基类）
//    求面积，虚函数(从概念出发，因存在的对象行为)
//    求长度，虚函数(从概念出发，因存在的对象行为)
//【开发者及日期】 范静涛 2024/7/23
//【更改记录】
//------------------------------------------------------------------------------
class Line3D : public Element3D_FixedPoints{
public:
    //---------------------------------------------------------------
    //必要的构造、析构、赋值行为
    //---------------------------------------------------------------
    //带参构造函数
    Line3D(const Point3D& P1, const Point3D& P2);
    //拷贝构造函数
    Line3D(const Line3D& Source);
    //赋值运算符
    Line3D& operator=(const Line3D& Source);
    //虚析构函数（可能做基类），无动态构造成员，默认实现
    virtual ~Line3D() = default;
    //---------------------------------------------------------------
    //非静态Getter成员函数：需检查所有Getter是否有后置const
    //---------------------------------------------------------------
    //求面积override
    double Area() const override;
    //求长度override
    double Length() const override;
};

#endif /* Line3D_hpp */
